package front.end.subestacao.nucleo;

import java.util.ArrayList;
import java.util.List;

import front.end.subestacao.itens.Componente;
import front.end.subestacao.itens.Estado;
import front.end.subestacao.itens.Painel;
import front.end.subestacao.rede.Ficha;

public class GerenciadorFichaImpl implements GerenciadorFicha {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private GerenciadorTipoColor gerTipoFicha;

	public GerenciadorFichaImpl() {
		
		gerTipoFicha = new GerenciadorTipoColorImpl();

	}

	@Override
	/*
	 * (non-javadoc)
	 * @see front.end.subestacao.nucleo.GerenciadorFicha#geraFichas(Painel painel, Componente compoente,
			List<Estado> estadosAtivos)
	 */
	public List<Ficha> geraFichas(Painel painel, Componente compoente,
			List<Estado> estadosAtivos) {

		List<Ficha> lstFichas = new ArrayList<Ficha>();

		if (!estadosAtivos.isEmpty()) {
			for (Estado estado : estadosAtivos) {

				List<String> lstValores = gerTipoFicha.buscaTipoColor(
						compoente.getTipoFicha()).getValores();

				// 1`(PainelDefault, GPGDefault, Aberto);
				if (lstValores.size() > 2) {
					String valor = "1`(" + painel.getNome() + ", "
							+ compoente.getNome() + ", " + estado.getNome()
							+ ")";
					lstFichas.add(new Ficha(valor, estado.getLocal()));
				} else {
					// 1`(PainelDefault, Quadro 1);
					String valor = "";
					if (compoente.getEhUnicoPorPainel())
						valor = "1`(" + painel.getNome() + ", "
								+ estado.getNome() + ")";
					else
						valor = "1`(" + painel.getNome() + ", "
								+ compoente.getNome() + ")";
					lstFichas.add(new Ficha(valor, estado.getLocal()));
				}
			}

		}

		// Gera ficha de campo
		if (compoente.getTemEstadoCampo() && compoente.getEstadoCampo() != null) {
			Estado estadoCampo = compoente.getEstadoCampo();

			String valor = "1`(" + painel.getNome() + ", "
					+ compoente.getNome() + ", " + estadoCampo.getNome() + ")";

			lstFichas.add(new Ficha(valor, "Campo"));

		}

		return lstFichas;
	}

}
